/***************************** BEGIN LICENSE BLOCK ***************************

 The contents of this file are subject to the Mozilla Public License Version
 1.1 (the "License"); you may not use this file except in compliance with
 the License. You may obtain a copy of the License at
 http://www.mozilla.org/MPL/MPL-1.1.html
 
 Software distributed under the License is distributed on an "AS IS" basis,
 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 for the specific language governing rights and limitations under the License.
 
 The Original Code is the "EO-SPS Framework".
 
 The Initial Developer of the Original Code is Spotimage S.A.
 Portions created by the Initial Developer are Copyright (C) 2007
 the Initial Developer. All Rights Reserved.
 
 Contributor(s): 
    Alexandre Robin <alexandre.robin@spotimage.fr>
 
******************************* END LICENSE BLOCK ***************************/

package com.spotimage.eosps;


/**
 * <p><b>Title:</b><br/>
 * EO Constants
 * </p>
 *
 * <p><b>Description:</b><br/>
 * This interface contains all common constants, URI, enumerations
 * used in the library. These are constants used in both optical and
 * radar cases.
 * Separate classes provide optical and radar specific constants.
 * </p>
 *
 * <p>Copyright (c) 2008, Spot Image</p>
 * @author Alexandre Robin <alexandre.robin@spotimage.fr>
 * @date July, 10th 2008
 * @since 1.0
 */
public interface EOConstants
{
	// namespace and XML elements
	public static String EOT_PREFIX = "eot";
	public static String EOT_NAMESPACE = "http://www.opengis.net/eosps/2.0";
	public static String EOP_PREFIX = "eop";
	public static String EOP_NAMESPACE = "http://earth.esa.int/eop";
	public static String OGC_URI_PREFIX = "http://www.opengis.net/def/";
	public static String EO_URI_PREFIX = OGC_URI_PREFIX + "property/OGC-EO/0/";
	public static String ISO19107_URI_PREFIX = OGC_URI_PREFIX + "objectType/ISO-19107/2003/";
	
	
	// tasking parameter URIs
	public static String PRIORITY_URI = EO_URI_PREFIX + "PriorityLevel";
	
	public static String SWATH_REQUEST_URI = EO_URI_PREFIX + "SwathProgrammingRequest";
	public static String SWATH_SEGMENT_URI = EO_URI_PREFIX + "SwathSegment";
	public static String CYCLE_URI = EO_URI_PREFIX + "Cycle";
	public static String TRACK_URI = EO_URI_PREFIX + "Track";
	public static String START_ORBIT_URI = EO_URI_PREFIX + "StartOrbit";
	public static String START_FRAME_URI = EO_URI_PREFIX + "StartFrame";
	public static String STOP_ORBIT_URI = EO_URI_PREFIX + "StopOrbit";
	public static String STOP_FRAME_URI = EO_URI_PREFIX + "StopFrame";

	public static String COV_REQUEST_URI = EO_URI_PREFIX + "CoverageProgrammingRequest";
	public static String ROI_URI = EO_URI_PREFIX + "RegionOfInterest";
	public static String POLYGON_URI = ISO19107_URI_PREFIX + "GM_Polygon";
	public static String RING_URI = ISO19107_URI_PREFIX + "GM_Ring";
	public static String CIRCLE_URI = ISO19107_URI_PREFIX + "GM_Circle";
	
	public static String TOI_URI = EO_URI_PREFIX + "TimeOfInterest";
	public static String SURVEY_PERIOD_URI = EO_URI_PREFIX + "SurveyPeriod";
	public static String TIME_SERIES_URI = EO_URI_PREFIX + "TimeSeries";
	public static String TIME_OCCURENCES_URI = EO_URI_PREFIX + "Occurences";
	public static String TIME_PERIODICITY_URI = EO_URI_PREFIX + "PeriodicityRange";
	public static String TIME_LATEST_START_URI = EO_URI_PREFIX + "LatestStart";
	
	public static String ACQ_TYPE_URI = EO_URI_PREFIX + "AcquisitionType";
	public static String MONO_ACQ_URI = EO_URI_PREFIX + "MonoscopicAcquisition";
	public static String STEREO_ACQ_URI = EO_URI_PREFIX + "StereoscopicAcquisition";
	public static String COVERAGE_TYPE_URI = EO_URI_PREFIX + "CoverageType";
	public static String BHRATIO_URI = EO_URI_PREFIX + "BHRatio";
	public static String MAX_COUPLE_DELAY_URI = EO_URI_PREFIX + "MaxCoupleDelay";
	
	public static String INC_RANGE_URI = EO_URI_PREFIX + "IncidenceRange";
	public static String AZIMUTH_URI = EO_URI_PREFIX + "AzimuthAngle";
	public static String ELEVATION_URI = EO_URI_PREFIX + "ElevationAngle";
	
	public static String POINTING_RANGE_URI = EO_URI_PREFIX + "PointingRange";
	public static String ALONG_TRACK_URI = EO_URI_PREFIX + "AlongTrackAngle";
	public static String ACROSS_TRACK_URI = EO_URI_PREFIX + "AcrossTrackAngle";
	
	public static String GROUND_RES_URI = EO_URI_PREFIX + "GroundResolution";
	public static String FUSION_URI = EO_URI_PREFIX + "FusionAccepted";
	public static String INSTRUMENT_MODE_URI = EO_URI_PREFIX + "InstrumentMode";
	

	// tasking parameter values enumeration
	public enum FeasibilityLevel {SIMPLE, COMPLETE};
	public enum Priority {STANDARD, HIGH};
	public enum RoiType {POLYGON, CIRCLE, UNKNOWN};
	public enum ToiType {PERIOD, SERIES, UNKNOWN};
	public enum AcquisitionType {MONO, STEREO, UNKNOWN};
	public enum CoverageType {MONOPASS, MULTIPASS, SINGLE_SWATH};
	
	
	// request extensions elements
	public static String FEASIBILITY_LEVEL_ELT = "eot:FeasibilityLevel";
	public static String REF_FEASIBILITY_ELT = "eot:ReferenceFeasibilityID";
	public static String MANUAL_VALIDATION_ELT = "eot:ManualValidation";

	
	// response XML elements and attributes
	public static String FEASIBILITY_STUDY_ELT = "eot:FeasibilityStudy";
	public static String PROGRAMMING_STATUS_ELT = "eot:ProgrammingStatus";
	
	public static String PERCENT_COMPLETION_ELT = "eot:percentCompletion";
	public static String EXPIRATION_DATE_ELT = "eot:expirationDate";
	public static String ESTIMATED_COST_ELT = "eot:estimatedCost";
	public static String SUCCESS_RATE_ELT = "eot:successRate";
	public static String INFO_USED_ELT = "eot:informationUsed";
	public static String CELL_ELT = "eot:cell/eot:GridCell";
	public static String SEGMENT_ELT = "eot:segment/eot:Segment";
	
	public static String ID_ATT = "gml:id";
	public static String UOM_ATT = "uom";
	public static String SRS_ATT = "srsName";
	public static String STATUS_ELT = "eot:status";
	public static String FOOTPRINT_POLY_ELT = "eot:footprint/gml:Polygon";
	public static String FOOTPRINT_COORDS_ELT = "gml:exterior/gml:LinearRing/gml:posList";
	public static String SUCCESS_DATE_ELT = "eot:estimatedSuccessDate";
	public static String LAST_ATTEMPT_ELT = "eot:lastAttemptDate";
	public static String NEXT_ATTEMPT_ELT = "eot:nextAttemptDate";	
	public static String REMAINING_ATTEMPTS_ELT = "eot:remainingAttempts";
	public static String ACQ_START_ELT = "eot:acquisitionStartTime";
	public static String ACQ_STOP_ELT = "eot:acquisitionStopTime";
	public static String ACQ_METHOD_ELT = "eot:acquisitionMethod/eop:EarthObservationEquipment";
	public static String RELATED_SEGMENT_ELT = "eot:relatedSegment/@href";
	
	public static String PLATFORM_ID_ELT = "eop:platform/eop:Platform/gml:identifier";
	public static String PLATFORM_NAME_ELT = "eop:platform/eop:Platform/eop:shortName";
	public static String INSTRUMENT_ID_ELT = "eop:instrument/eop:Instrument/gml:identifier";
	public static String INSTRUMENT_NAME_ELT = "eop:instrument/eop:Instrument/eop:shortName";
	public static String INSTRUMENT_MODE_ELT = "eop:sensor/eop:Sensor/eop:operationalMode";
	public static String RESOLUTION_ELT = "eop:sensor/eop:Sensor/eop:resolution";
	public static String ORBIT_NUM_ELT = "eop:acquisitionParameters/eop:Acquisition/eop:orbitNumber";
	public static String ORBIT_DIR_ELT = "eop:acquisitionParameters/eop:Acquisition/eop:orbitDirection";
	public static String INC_ANGLE_ELT = "eop:acquisitionParameters/eop:Acquisition/eop:incidenceAngle";
	public static String PITCH_ANGLE_ELT = "eop:acquisitionParameters/eop:Acquisition/eop:pitch";
	public static String ROLL_ANGLE_ELT = "eop:acquisitionParameters/eop:Acquisition/eop:roll";
	public static String YAW_ANGLE_ELT = "eop:acquisitionParameters/eop:Acquisition/eop:yaw";
	
	
	// response value enumerations
	public enum ReportType {PROG_STATUS, FEASIBILITY};
	public enum AcqStatus {POTENTIAL, PLANNED, ACQUIRED, VALIDATED, CANCELLED, REJECTED, FAILED, $UNKNOWN};
	public enum InformationType {KINEMATIC_MODEL, CLIMATE_STATISTICS, WEATHER_FORECAST, ESTIMATED_WORKLOAD, REAL_WORKLOAD};
	
	
	// response units and crs
	public static String CRS_4326 = "http://www.opengis.net/def/crs/EPSG/0/4326";
	public static String UNIT_CURRENCY = "http://www.opengis.net/def/unit/OGC/0/currency/EUR";
	public static String UNIT_DEG = "deg";
}
